/**
 * 一般的GET请求
 * @param {String} url 接口地址
 * @param {Function} funSuccess 成功的回调函数
 * @param {Function} funComplete 请求结束的回调
 */
function get(url, funSuccess, funComplete = () => {}) {
	uni.request({
		url: url,
		method: 'GET',
		sslVerify: false,
		header: {
			"content-type": "application/json;charset=UTF-8"
		},
		success: res => {
			funSuccess(res)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	})
}
/**
 * 一般的GET请求
 * @param {String} url 接口地址
 * @param {Function} funSuccess 成功的回调函数
 * @param {Function} funComplete 请求结束的回调
 */
function getWithHeader(url,header,funSuccess, funComplete = () => {}) {
	uni.request({
		url: url,
		method: 'GET',
		sslVerify: false,
		header: header,
		success: res => {
			funSuccess(res)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}
/**
 * 一般的GET请求
 * @param {String} url 接口地址
 * @param {Function} funSuccess 成功的回调函数
 * @param {Function} funComplete 请求结束的回调
 */
function postQuery(url, data,funSuccess, funComplete = () => {}){
	uni.request({
		url: url,
		method: 'POST',
		data: data,
		header:{//multipart/form-data,application
			"content-type":"application/x-www-form-urlencoded;charset=UTF-8"
		},
		success:res=>{
			funSuccess(res)
		},
		fail: err=>{
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}

/**
 * 一般的GET请求
 * @param {String} url 接口地址
 * @param {Function} funSuccess 成功的回调函数
 * @param {Function} funComplete 请求结束的回调
 */

function post(url, data,funSuccess, funComplete = () => {}){
	uni.request({
		url: url,
		method: 'POST',
		data: data,
		header:{//multipart/form-data,application
			"content-type":"application/json;charset=UTF-8"
		},
		success:res=>{
			funSuccess(res)
		},
		fail: err=>{
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}
/**
 * 一般的GET请求
 * @param {String} url 接口地址
 * @param {String} name 文件上传接口的参数名，服务端一般为"file"
 * @param {String} filepath 本地文件路径
 * @param {JSON} data 要提交的其他表单参数
 * @param {Function} funComplete 请求结束的回调
 */
function postFile(url, name, filePath, data, funSuccess, funComplete=()=>{}){
	uni.uploadFile({
		url:url,
		filePath:filePath,
		name:name,
		formData:data,
		success:res=>{
			funSuccess(res)
		},
		fail: err=>{
			console.log(err);
		},
		complete: () => {
			funComplete()
		}
	});
}
/**
 * Promise写法，嵌套请求时，async块内代码是同步的，会等待await代码行的执行结果
 * 另外注意lambda表达式的使用，async关键字应在匿名函数参数前（需要加括号）
 * @param {String} url 接口地址
 * @param {JSON} data 要提交的参数
 * @param {String} method 请求方式，默认GET，其他方法按需填写
**/
function requestAsync(url, data={}, method='GET'){
	return new Promise((resolve, reject) => {
		uni.request({
			url,
			method,
			 data,
			success:res=>{
				resolve(res.data)
			},
			fail: err=>{
				reject(err)
			}
		});
	})
}
function del(url, data, funSuccess){
	uni.request({
		url,
		method: 'DELETE',
		data,
		header: {
			"content-type": "application/x-www-form-urencoded; charset=UTF-8"
		},
		success: res => {
			funSuccess(res.data)
		},
		fail: err => {
			console.log(err);
		},
		complete: () => {}
	});
}

module.exports = {
	get,
	getWithHeader,
	postQuery,
	post,
	postFile,
	requestAsync,
	del
}